home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Champak 29
/
Volume 29 - JOGO DISK .iso
/
Games
/
jungle_adventure.swf
/
scripts
/
__Packages
/
GDK
/
EventSubscriber.as
< prev
next >
Wrap
Text File
|
2006-11-29
|
3KB
|
107 lines
class GDK.EventSubscriber
{
static var CALL_LAST = 1;
static var EVENT_NAME_AS_ARGUMENT = 2;
function EventSubscriber(obj)
{
GDK.EventSubscriber.initObject(obj);
}
static function initObject(obj)
{
obj.addEvent = GDK.EventSubscriber.prototype.addEvent;
obj.removeEvent = GDK.EventSubscriber.prototype.removeEvent;
obj.sendEvent = GDK.EventSubscriber.prototype.sendEvent;
obj.removeAllEvents = GDK.EventSubscriber.prototype.removeAllEvents;
obj.mappedEvents = {};
}
function addEvent(name, method, target, options)
{
if(!target)
{
target = this;
}
var _loc2_ = undefined;
if(!(_loc2_ = this.mappedEvents[name]))
{
var _loc0_ = null;
_loc2_ = this.mappedEvents[name] = [];
}
var _loc3_ = {t:target,fn:method,n:(options & GDK.EventSubscriber.EVENT_NAME_AS_ARGUMENT) > 0};
if((options & 1) == 0)
{
_loc2_.push(_loc3_);
}
else
{
_loc2_.unshift(_loc3_);
}
}
function sendEvent(name)
{
var _loc4_ = undefined;
if(_loc4_ = this.mappedEvents[name])
{
var _loc5_ = arguments.slice(1);
var _loc3_ = _loc4_.length;
while((_loc3_ = _loc3_ - 1) > -1)
{
_loc4_[_loc3_].fn.apply(_loc4_[_loc3_].t,!_loc4_[_loc3_].n ? _loc5_ : arguments);
}
}
}
function removeEvent(name, method, target)
{
var _loc3_ = undefined;
if(name == null || !(_loc3_ = this.mappedEvents[name]))
{
return undefined;
}
var _loc2_ = _loc3_.length;
if(!target)
{
while((_loc2_ = _loc2_ - 1) > -1)
{
if(_loc3_[_loc2_].fn == method)
{
_loc3_.splice(_loc2_,1);
}
}
}
else if(!method)
{
while((_loc2_ = _loc2_ - 1) > -1)
{
if(_loc3_[_loc2_].t == target)
{
_loc3_.splice(_loc2_,1);
}
}
}
else
{
while((_loc2_ = _loc2_ - 1) > -1)
{
if(_loc3_[_loc2_].fn == method && _loc3_[_loc2_].t == target)
{
_loc3_.splice(_loc2_,1);
}
}
}
}
function removeAllEvents(target)
{
var _loc3_ = undefined;
for(var _loc5_ in this.mappedEvents)
{
var _loc2_ = _loc3_ = this.mappedEvents[_loc5_].length;
while((_loc2_ = _loc2_ - 1) > -1)
{
if(_loc3_[_loc2_].t == target)
{
_loc3_.splice(_loc2_);
}
}
}
}
}